package com.example.demo.controller;

import com.example.demo.configuration.QueryPageParam;
import com.example.demo.service.UserService;
import com.example.demo.utils.Response;
import com.example.demo.vo.UserVoEx;
import com.example.demo.vo.UserVoIn;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

@RestController
public class UserController {

    @Autowired
    private UserService userService;

    /**
     * 新增用户
     * @param userVoIn 新增用户信息
     * @return 1 新增用户数量
     */
    @PostMapping("/user/save")
    public Response<Integer> save(@RequestBody UserVoIn userVoIn){
        System.out.println(userVoIn.toString());
        return userService.save(userVoIn);
    }

    /**
     * 删除用户
     * @param account 删除用户account
     * @return 是否删除成功
     */
    @DeleteMapping("/user/delete")
    public Response<Integer> delete(@RequestParam("account") String account){
        return userService.deleteByAccount(account);
    }

    /**
     * 修改用户信息
     * @param userVoIn 修改以后的用户信息
     * @return  修改完成的用户信息
     */
    @PostMapping("/user/update")
    public Response<UserVoEx> update(@RequestBody UserVoIn userVoIn){
        return userService.update(userVoIn);
    }


    /**
     * 模糊查询
     * @param name
     * @return
     */
    @GetMapping("/user/listL")
    public Response<List<UserVoEx>> listL(@RequestParam String name){
        System.out.println(name);
        return userService.listL(name);
    }


    /**
     * 分页查询
     * @param param 分页信息与查询内容
     * @return  可输出用户类
     */
    @PostMapping("/user/listPage")
    public Response<List<UserVoEx>> listPage(@RequestBody QueryPageParam param){
        return userService.listPage(param);
    }


    /**
     * 分页显示所有信息
     * @param param 无
     * @return 所有用户信息中的1页
     */
    @PostMapping("/user/lists")
    public Response<List<UserVoEx>> lists(@RequestBody QueryPageParam param){
        return userService.lists(param);
    }
}
